package com.study

fun main() {

    //`箭头函数`()

    //`默认参数和具名参数`()

    `回调函数`(name = "wahaha", age = 15, {
        println("$it")
    }, {
        println("$it")
    })
//这种外层写法只适合一个回调
//    `回调函数`(name="wahaha",age=15){
//        println("$it")
//    }{
//        kotlin.io.println("$it")
//    }

    //dart
//    dart("wahaha",(name)=>{
//        print(name);
//    });
//    public void dart(String name,Function(String name) callBack)
//    {
//        callBack(name);
//    }
    //c#
//    c#("wahaha",(name)=>{
//        console.writeline(name);
//    });
//    public void c#(string name,actoin<string> callback)
//    {
//        callback(name);
//    }
    //java在另一个文件


}


fun `箭头函数`() {
    val test1: (Int, Int) -> String = { a, b ->
        var re: Int = a + b
        "结果为:$re"
    }
    val re = test1(10, 11)
    println(re)

    val test2: () -> Unit

    val test3: () -> Unit = {
        println("这里是执行结果")
    }

    test2 = test3

    test2()
}

fun `默认参数和具名参数`() {
    fun test1(a: Int, b: String = "默认参数"): Unit {
        println("a+$b")
    }
    test1(a = 1) // or test1(1)
}

fun `回调函数`(name: String, age: Int, callBack: (String) -> Unit, fail: (String) -> Unit) {
    callBack("$name 年龄$age")
    fail("我失败了")
}